package cn.chainco.cts.iservice;

import java.util.List;
import java.util.Set;

import cn.chainco.cts.jdo.Country;
import cn.chainco.cts.jdo.Point;

public interface IPointManager{
	/**
	 * 新增或修改地名（包含管理员/用户）
	 * 
	 * @param place
	 * @return 0成功 1已存在同地名 2数据不完整
	 */
	public int savePoint(Point point);

	/**
	 * 保持地名表数据完整性（如果查不到数据，执行此方法一次）
	 */
	public void clearUpPoint();

	/**
	 * 检查地名是否可以删除
	 */
	public boolean isPointCanDelete(Point point);

	/**
	 * 根据国家删除地名
	 */
	public void deletePointByCountry(Country country);

	/**
	 * 此方法是将地点数据补充完整
	 */
	public List<Point> updatePointByGroup();

	/**
	 * 关键词查询地点（2011.10.11以后适用）
	 * @param portType 0海港+内陆；1海港；2空港+内陆；3空港
	 * @param keyword 查询的关键词
	 * @return
	 */
	public List<Point> searchPoint(int portType, String keyword);

	/**
	 * 关键词查询地点（2012.1.13以后适用）
	 * @param portType 0身边海港 1身边海港
	 * @return
	 */
	public List<Point> searchPointGEO(int portType, String lat, String lng);

	/**
	 * 查找周边海港/空港
	 * @param point
	 * @param type 0海港1空港
	 * @return
	 */
	public String getNeighboringPorts(Point point, int type);

	/**
	 * 查询港口半径范围的点
	 * @param portType 0海港 1空港
	 * @return
	 */
	public List<Point> searchPointRadius(int portType, long pointId);

	public String getNoLatLngPoints();

	/**
	 * 处理地点的分组标签（根据逗号分隔）
	 */
	public Set<String> getGroupNameList();

	/**
	 * 修改地点的分组状态
	 * @param id
	 */
	public void updatePointGroup(String idStr);

	/**
	 * 修改地点的分组状态
	 * @param id
	 */
	public void updatePointGroup(Long id);
}
